package com.songlanyun.common.supplychainapi.order.model;

import com.songlanyun.common.drive.ValueObject;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * 错误订单详情
 *
 * @author wuchao
 */
@Data
public class ListErrorInfo implements Serializable {

    /**
     * 用户信息
     */
    private ConsigneeInfo consigneeInfo;
    /**
     * 费用信息
     */
    private FeeInfo feeInfo;
    /**
     * 商品信息
     */
    private DataGoodsInfo goodsInfo;
    /**
     * 操作日志
     */
    private OrderActionLog[] orderActionLog;
    /**
     * //订单信息
     */
    private OrderInfo orderInfo;

    /**
     * 用户信息
     */
    @Data
    public static class ConsigneeInfo implements ValueObject {
        /**
         * 收货地址
         */
        private String address;
        /**
         * 收货人
         */
        private String consignee;
        /**
         * 手机号
         */
        private String phone;

    }

    /**
     * 费用信息
     */
    @Data
    public static class FeeInfo implements ValueObject {
        /**
         * 运费
         */
        private Double freight;
        /**
         * 商品合计金额
         */
        private Double goodsFee;
        /**
         * 订单金额
         */
        private Double orderMoney;
    }


    /**
     * 商品信息
     */
    @Data
    public static class DataGoodsInfo implements ValueObject {
        /**
         * 商品信息
         */
        private GoodsInfoElement[] goodsInfo;
        /**
         * 商品金额合计
         */
        private Double totalMoney;
    }

    @Data
    public static class GoodsInfoElement implements ValueObject {
        /**
         * 封面图
         */
        private String cover;
        /**
         * 商品id
         */
        private Long id;
        /**
         * 数量
         */
        private Long num;
        /**
         * 下单客户单价
         */
        private Double price;
        /**
         * 规格名称
         */
        private String specValue;
        /**
         * 商品名称
         */
        private String title;
        /**
         * 小计
         */
        private Double totalMoney;

    }

    @Data
    public static class OrderActionLog implements ValueObject {
        /**
         * 操作记录
         */
        private String action;
        /**
         * 操作时间
         */
        private Long createdTime;
        /**
         * 操作结果
         */
        private String result;
        /**
         * 操作者
         */
        private String userName;
    }

    /**
     * //订单信息
     */
    @Data
    public static class OrderInfo implements ValueObject {
        /**
         * 提交时间
         */
        private Long createdTime;
        /**
         * 是否关闭
         */
        private Integer isClose;
        /**
         * 异常原因
         */
        private String message;
        /**
         * 订单来源/订单提交人
         */
        private String orderCommiter;
        /**
         * 异常订单状态  0 待补单 1已补单
         */
        private Integer orderStatus;
        /**
         * 订单异常类型 0下单校验不通过 1余额不足 2 大额订单 3.其他
         */
        private Integer theType;
        /**
         * 更新时间 /确认时间
         */
        private Long updateTime;

    }

}
